package QuintaAula;


public class Fibonacci {

	public static int[] entradas = { 3, 6, 8, 10};// Para 50 e 100 o algoritmo não termina 

	public static long fibonacciIterativo(int n) {
		long antepenultimo, ultimo, atual;
		antepenultimo = 0;
		ultimo = 1;
		atual = 1;
		for (int i = 2; i < n; i++) {
			antepenultimo = ultimo;
			ultimo = atual;
			atual = antepenultimo + ultimo;
		}
		return atual;
	}

	public static long fibonacciRecursivo(long n) {
		if (n == 1 || n == 2) {
			return 1;
		}
		return fibonacciRecursivo(n - 2) + fibonacciRecursivo(n - 1);
	}

	public static void main(String[] args) {

		long inicio, fim, resultado;

		for (int n : entradas) {
			
			System.out.println("n = " + n);

			inicio = System.nanoTime();
			resultado = fibonacciIterativo(n);
			fim = System.nanoTime();
			System.out.println("T(Iterativo): resultado = " + resultado
					+ ", tempo = " + (fim - inicio));

			inicio = System.nanoTime();
			resultado = fibonacciRecursivo(n);
			fim = System.nanoTime();
			System.out.println("T(Recursivo): resultado = " + resultado
					+ ", tempo = " + (fim - inicio) + "\n");
		}
	}
}